<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="../vue.js"></script>
</head>
<style>
  .login {
    background-color: red;
  }

  .zhuce {
    background-color: aquamarine;
  }
</style>

<body>
  <div id="app">
    <h1>{{msg}}</h1>
    <button @click="isLogin=true">登录</button>
    <button @click="isLogin=false">注册</button>
    <!--
      问题： 
      因为diff算法是一直处在介入状态中 
      在没有写key的情况下,diff算法会认为两个表单是一样的,所以导致切换的时候登录的输入框内容依然保持在注册输入框中
      解决：
      给两个表单增加key
    -->
    <form action="###" v-if="isLogin" class="login" key="denglu">
      账号：<input type="text" name="name" v-model="name">
      密码：<input type="text" name="pas" v-model="pas">
      登录
    </form>
    <form action="###" v-else class="zhuce" key="zhuce">
      账号：<input type="text" name="name">
      密码：<input type="text" name="pas">
      注册
    </form>
    <!-- 如果两个表单的数据双向绑定都是同一个数据 则表单更改 输入框依旧会有上一次输入的值 因为默认绑定value -->
  </div>
  <script>
    Vue.config.productionTip = false;
    const vm = new Vue({
      el: "#app",
      data() {
        return {
          msg: "hello vue!",
          isLogin: true,
          name: '',
          pas: ''
        }
      },
      methods: {}
    })
  </script>
</body>

</html>